package com.shxy.controller;

import com.shxy.common.entity.JsonResult;
import com.shxy.common.enums.ResultCode;
import com.shxy.common.utils.ResultTool;
import com.shxy.controller.ui.*;
import com.shxy.entity.insurance.Account;
import com.shxy.entity.insurance.Customer;
import com.shxy.entity.insurance.InsuranceCase;
import com.shxy.entity.wlzx.News;
import com.shxy.service.ICustomerService;
import com.shxy.service.IFtpService;
import com.shxy.service.INewsService;
import com.shxy.service.IUserService;
import com.shxy.util.RandomValidateCodeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 数据访问接口
 */
@RestController
@RequestMapping("/api")
public class ApiController {

    @RequestMapping("/test")
    public JsonResult<String> test() {
        return ResultTool.success("测试");
    }

//    private final static Logger logger = LoggerFactory.getLogger(ApiController.class);
//    @Autowired
//    private ICustomerService customerService;
//    @Autowired
//    private IFtpService ftpService;
//    @Autowired
//    private INewsService newsService;
//    @Autowired
//    private IUserService userService;
//
//    @RequestMapping("/get_customer_all")
//    public JsonResult<List<CustomerItem>> test() {
//        List<Customer> list = customerService.getCustomerAll();
//        List<CustomerItem> customerItems = list.stream().map(customerInfo -> {
//            CustomerItem item = new CustomerItem();
//            BeanUtils.copyProperties(customerInfo, item);
//            return item;
//        }).collect(Collectors.toList());
//        return ResultTool.success(customerItems);
//    }
//
//    @RequestMapping("/get_customer_all_detail")
//    public JsonResult<List<Customer>> getCustomersAll() {
//        List<Customer> list = customerService.getCustomerAll();
//        return ResultTool.success(list);
//    }
//
//    /**
//     * 删除用户
//     *
//     * @param id
//     * @return
//     */
//    @DeleteMapping("/delete_customer/{id}")
//    public JsonResult<String> deleteCustomerById(@PathVariable(name = "id") int id) {
//        boolean rs = customerService.deleteCustomerById(id);
//        if (rs) {
//            return ResultTool.success("删除成功!");
//        }
//        return ResultTool.fail(ResultCode.PARAM_NOT_VALID);
//    }
//
//    /**
//     * 保存修改的客户信息
//     *
//     * @param customerUpload
//     * @return
//     */
//    @PutMapping("/save_customer")
//    public JsonResult<CustomerItem> saveCustomer(@RequestBody CustomerUpload customerUpload) {
//        // 保存客户信息
//        Customer customer = customerService.saveCustomer(customerUpload);
//        // 保存失败
//        if (customer == null) {
//            return ResultTool.fail(ResultCode.COMMON_FAIL);
//        }
//
//        CustomerItem item = new CustomerItem();
//        BeanUtils.copyProperties(customer, item);
//        return ResultTool.success(item);
//    }
//
//    @GetMapping("/get_company_list")
//    public JsonResult<List<String>> getCompanyList() {
//        List<String> companies = customerService.getCompanies();
//        return ResultTool.success(companies);
//    }
//
//    /**
//     * 查询用户账户列表
//     *
//     * @param customerId
//     * @return
//     */
//    @GetMapping("/get_customer_accout/{id}")
//    public JsonResult<List<AccountItem>> getCustomerAccounts(@PathVariable(name = "id") int customerId) {
//        List<Account> accounts = customerService.getCustomerAccounts(customerId);
//        List<AccountItem> accountItems = accounts.stream().map(account -> {
//            AccountItem accountItem = new AccountItem();
//            BeanUtils.copyProperties(account, accountItem);
//            accountItem.setIdCard(account.getCustomer().getIdCard());
//            accountItem.setName(account.getCustomer().getName());
//            return accountItem;
//        }).collect(Collectors.toList());
//        return ResultTool.success(accountItems);
//    }
//
//    /**
//     * 保存账户信息
//     *
//     * @param customerId
//     * @param bank
//     * @param account
//     * @param phone
//     * @return
//     */
//    @PutMapping("/save_account")
//    public JsonResult<Object> saveAccount(int customerId, String bank, String account, String phone) {
//        // System.out.println(customerId + "-" + bank + "-" + account);
//        // 判断该账户是否存在
//        if (customerService.accountExists(customerId, bank, account)) {
//            JsonResult<Object> result = new JsonResult<>();
//            result.setErrorCode(1101);
//            result.setErrorMsg("该账户已存在.");
//            return result;
//        }
//
//        // 保存账户信息
//        Account acc = customerService.saveAccount(customerId, bank, account, phone);
//        return ResultTool.success(acc);
//    }
//
//    /**
//     * 保存案件信息
//     *
//     * @param caseInfo
//     * @return
//     */
//    @PostMapping("/save_case_info")
//    public JsonResult<InsuranceCase> saveCase(@RequestBody CaseUpload caseInfo) {
//        // 保存案件信息
//        InsuranceCase icase = customerService.addInsuranceCase(caseInfo);
//        // 将保存后的信息返回
//        return ResultTool.success(icase);
//    }
//
//    /**
//     * 获取案件信息
//     *
//     * @param dateStart
//     * @param dateEnd
//     * @param pageIndex
//     * @param pageSize
//     * @return
//     */
//    @GetMapping("/get_case_list")
//    public JsonResult<List<CaseItem>> getCaseList(@RequestParam(name = "dateStart", defaultValue = "0") long dateStart,
//                                                  @RequestParam(name = "dateEnd", defaultValue = "0") long dateEnd,
//                                                  @RequestParam(name = "pageIndex", defaultValue = "0") int pageIndex,
//                                                  @RequestParam(name = "pageSize", defaultValue = "10") int pageSize,
//                                                  @RequestParam(name = "customerId", defaultValue = "0") int customerId) {
//        List<InsuranceCase> insuranceCases = customerService.getInsuranceCaseList(customerId, dateStart, dateEnd, pageIndex, pageSize);
//        List<CaseItem> caseItems = insuranceCases.stream().map(insuranceCase -> {
//            CaseItem caseItem = new CaseItem();
//            BeanUtils.copyProperties(insuranceCase, caseItem);
//            BeanUtils.copyProperties(insuranceCase.getAccount(), caseItem);
//            BeanUtils.copyProperties(insuranceCase.getCustomer(), caseItem);
//            if (caseItem.getItype() == 1) {
//                long[] hs = {insuranceCase.getHospitalIn(), insuranceCase.getHospitalOut()};
//                caseItem.setHospitalStay(hs);
//            }
//            return caseItem;
//        }).collect(Collectors.toList());
//        return ResultTool.success(caseItems);
//    }
//
//    /**
//     * 上传文件
//     *
//     * @param file
//     * @return
//     */
//    @PostMapping("/upload")
//    public JsonResult<String> uploadFile(MultipartFile file) {
//        if (file == null) {
//            return ResultTool.success("上传失败!");
//        }
//        String fileName = ftpService.doUpload(file, 0);
//        return ResultTool.success(fileName);
//    }
//
//    /***************************************************************************************************************************/
//
//    /*******************************************************************************************************************/
//    /**
//     * 将客户全部初始化成用户
//     * @return
//     */
//    @GetMapping("/init_user_from_customer")
//    public JsonResult<List<UserItem>> initUserfromCustomer() {
//        List<User> users = userService.initFromCustomers();
//        List<UserItem> userItems = users.stream().map(user -> {
//            UserItem ui = new UserItem();
//            BeanUtils.copyProperties(user, ui);
//            return ui;
//        }).collect(Collectors.toList());
//        return ResultTool.success(userItems);
//    }
//
//    /**
//     * 生成验证码
//     */
//    @GetMapping("/getVerify")
//    public void getVerify(HttpServletRequest request, HttpServletResponse response) {
//        try {
//            response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片
//            response.setHeader("Pragma", "No-cache");//设置响应头信息，告诉浏览器不要缓存此内容
//            response.setHeader("Cache-Control", "no-cache");
//            response.setDateHeader("Expire", 0);
//            RandomValidateCodeUtil randomValidateCode = new RandomValidateCodeUtil();
//            randomValidateCode.getRandcode(request, response);//输出验证码图片方法
//        } catch (Exception e) {
//            logger.error("获取验证码失败>>>>   ", e);
//        }
//    }
//
//    /**
//     * 验证登录
//     * @param name
//     * @param pwd
//     * @param vc
//     * @return
//     */
//    @PostMapping("/check_login")
//    public JsonResult<UserItem> checkLogin(String name, String pwd, String vc, HttpServletRequest request) {
//        HttpSession session = request.getSession();
//        // 核对验证码
//        String vCode = (String) session.getAttribute(RandomValidateCodeUtil.RANDOMCODEKEY);
//        logger.info(String.format("%s----%s-----%s------%s-----%s", name, pwd, vc, vCode, session.getId()));
//        if(vCode == null || !vc.equalsIgnoreCase(vCode)){
//            return ResultTool.fail(ResultCode.PARAM_NOT_VALID);
//        }
//        // 检查登录
//        User user = userService.checkLogin(name, pwd);
//        if(user != null) {
//            UserItem ui = new UserItem();
//            BeanUtils.copyProperties(user, ui);
//            return ResultTool.success(ui);
//        }
//        return ResultTool.fail(ResultCode.USER_ACCOUNT_NOT_EXIST);
//    }
}
